(function () {
    var sendSysMsg = function (msg) {
        console.log(top);
        console.log(window);
        console.log("系统提示: " + msg);
    }
    var showMessage = function (msg) {
        console.log(top)
        console.log(window);
        console.log(msg);
    }

    var sendAuth = function () {
        var token = getCookie("___USER_TOKEN");
        if (token == null) {
            alert('token is null, pls login first!');
            return;
        }
        var data = {
            id: genUUID(),
            type: "post",
            status: 0,
            path: "/common/device/auth",
            header: {
                token: token
            }
        };
        data.header[_config.user_token_name] = token;
        _webSocket_send(data);
    }
    var msgMap = {};
    var _webSocket_open = function () {
        sendAuth();
    }
    var _webSocket_send = function (msg) {
        msgMap[msg.id] = msg;
        var msgStr = JSON.stringify(msg);
        showMessage(">>>发送消息：" + msgStr);
        msgStr = AesUtils.encrypt(msgStr);
        window.socket1.send(msgStr);
    }
    var _webSocket_receive = function (msg) {
        showMessage("<<<接收消息：" + msg);
        var obj = JSON.parse(msg);
        if (obj.status >= 400) {
            var err = obj && obj.body && obj.body.errMsg ? obj.body.errMsg : '操作不成功!';
            alert(err);
            return;
        }


        var reqMsg = msgMap[obj.id];
        if (reciveActions[obj.path] != null) {
            reciveActions[obj.path](obj, reqMsg);
        }
        delete msgMap[msg.id];
    }
    var _webSocket_close = function () {

    }
    var reciveActions = {
        '/common/device/reg': function (msg, reqMsg) {
            if (msg.body.id != null) {
                var deviceId = msg.body.id;
                setCookie("monitor_deviceId", deviceId);
                showDeviceCon(deviceId);
            }
        },
        '/account/user/login': function (msg, reqMsg) {
            var token = msg.body['sessionFullStr'];
            setCookie("monitor_ubang_token", token);
            showAuthCon(token);
            sendAuth();
        },
        '/common/device/auth': function (msg, reqMsg) {

        },
        '/status/notifi': function (msg, reqMsg) {
            // alert(msg);
        },
        '/systemCommTo': function (msg, reqMsg) {
            if (window.systemCommTo) {
                window.systemCommTo(msg, reqMsg);
            }
        }
    }

    var clearLog = function () {
        $('#messageCon').empty();
    }

    window.showAlert = sendSysMsg;
    window.webSocket_open = _webSocket_open;
    window.webSocket_receive = _webSocket_receive;
    window.webSocket_send = _webSocket_send;
    window.webSocket_close = _webSocket_close;
    window.clearLog = clearLog;
})();
